<?php

class usuarioController extends Controller{

    public function __construct($vars) {
        parent::__construct($vars);
        $this->LoadModel("usuario/usuario", "model");
    }
    
    public function index(){
        
        //se o usuario já está logado
        if($this->model->IsLoged()){
            if(!$this->model->Redirect()){
                Redirect("usuario/usuario/logado");
            }
        }

        //se usuario enviou algum dado
        if(!empty ($_POST))
            if($this->model->Login($_POST['email_login'], $_POST['senha_login']))
                Redirect("usuario/usuario/logado");

        //se usuario nao logou
        $this->setVars($this->model->getMessages());
        $this->genTags("Faça seu login");
        
        //se usuario ainda nao logou
        $this->display('usuario/usuario/login');
    }
    
    public function show(){
        $cod = array_shift($this->vars);
        if($cod == "") Redirect ('usuario/usuario');
        Redirect('usuario/dados/show/'.$cod);
    }
    
    public function inserir(){

        if(!empty ($_POST)){
            $status = $this->model->inserir($_POST);
            $vars   = $this->model->getMessages();
            if(array_key_exists('ajax', $_REQUEST) && $_REQUEST['ajax']) {
            	$vars['status'] = ($status == true)? 1:0;
            }
            $this->setVars($vars);
        }
        $this->genTags("Nova Conta");
        $this->display("usuario/usuario/inserir");
    }
    
    public function email(){
        $this->editar("usuario/usuario/email");
    }
    
    public function senha(){
        $this->editar("usuario/usuario/senha");
    }
    
    public function editar($url = "usuario/usuario/editar"){

        //se o usuario já está logado
        if(!$this->model->IsLoged()) $this->model->needLogin();
        $cod = $this->model->getUserId();
        if($cod == "") $this->logout();
        
        if(!empty ($_POST)){
            $status = $this->model->editar($cod, $_POST);
            $vars   = $this->model->getMessages();
            if(array_key_exists('ajax', $_REQUEST) && $_REQUEST['ajax']) {
                $vars['status'] = ($status == true)? 1:0;
            }
            $this->setVars($vars);
        }
        $this->registerVar('item', $this->model->getItem($cod, "", true));
        $this->genTags("Modificar Dados");
        $this->display($url);
    }
    
    public function identidade(){
        
        if(!isset($_SESSION["guard"])) Redirect(LINK);
        
        $cod = $this->model->getUserId();
        if($cod == "") Redirect (LINK);
        
        $this->genTags("Confirmar Identidade");        
        if(!empty ($_POST) && array_key_exists('senha', $_POST)){
            $user = $this->model->getAutenticatedUser($cod, $_POST['senha']);
            if(!empty($user)) {
                $url = $_SESSION["guard"]['url'];
                $_SESSION["guard"]['senha'] = $_POST['senha'];

                echo "<style> .formulario{display: none;}</style>";
                $this->LoadResource("html", "html");
                $this->html->LoadJQuery();
                $this->html->LoadJQueryFunction("$('.formulario').submit();");
                
                $this->LoadResource("formulario", "form");
                $form = array();
                $post = @unserialize($_SESSION['guard']['post']);
                if(is_array($post) && !empty($post)){
                    foreach($post as $name => $val){
                        $form[$name]['name']     = $name;
                        $form[$name]['default']  = $val;
                        $form[$name]['especial'] = 'hidden';
                    }
                    $this->form->NewForm($form, array(), array(), false, $url);
                }
                $this->html->flush();
                $this->html->start();
                die();
            }
            else $this->registerVar("erro","Autenticação falhou: A senha está incorreta.");
        }
        $this->display("usuario/usuario/identidade");
    }

    public function logout(){
        $this->model->Logout();
        Redirect("usuario/usuario/");
    }
    
    public function reenviar(){
        $user = array_shift($this->vars);
        $this->model->resend($user);
        $this->setVars($this->model->getMessages());
        $this->genTags("Reenviar Confirmação");
        $this->display('usuario/usuario/reenviar');
    }
    
    public function logado(){
        if(!$this->model->IsLoged()) Redirect("usuario/usuario/");
        $this->LoadModel('usuario/dados', 'udados');
        $cod = $this->model->getCodUsuario();
        $this->registerVar("usuario",  $this->model->getItem($cod));
        $this->registerVar("dados"  ,  $this->udados->getItem($cod));
        $this->genTags("Página do usuário");
        $this->display('usuario/usuario/logado');
    }

    /*recupera a senha de um usuario*/
    public function recuperar(){

        //se usuario já está logado ele é redirecionado para a pÃ¡gina prncipal
        if($this->model->IsLoged()){$this->logado();}

        //se o usuario solicitou a recuperacao da conta
        if( !empty($_POST) ){
            if($this->model->RecoverPassword($_POST['email'])){
                $arr = $this->model->getMessages();
                $this->display('usuario/usuario/recuperar', $arr);
                return;
            }
        }
        $arr = $this->model->getMessages();
        
        //se o usuario nao tentou recuperar a conta, mostra o formulario para ele
        $this->genTags("Recuperar Acesso");
        $this->display('usuario/usuario/recuperar', $arr);
    }

    public function confirmar(){
        $dados = array_shift($this->vars);
        if(!$this->model->Confirm($dados)){
            $this->setVars($this->model->getMessages());
            $this->display('');
        }
        $this->setVars($this->model->getMessages());
        $this->index();
    }

    public function confirmrec(){
        $dados = array_shift($this->vars);
        if(!$this->model->ConfirmRecoverPassword($dados)){
            $this->setVars($this->model->getMessages());
            $this->display('');
        }
        $this->setVars($this->model->getMessages());
        $this->index();
    }
    
}

?>
